package com.sudu.dao;

import com.sudu.domain.User;
import com.sudu.domain.UserInfo;
import org.apache.ibatis.annotations.*;

/**
 * 用户模块持久层接口
 */
@Mapper
public interface UserDao {
    /**
     * 插入用户数据
     * @param user 用户数据
     * @return 受影响的行数
     */
    @Insert("insert into user_t(username,password,phone,salt,create_time) " +
            "values(#{username},#{password},#{phone},#{salt},#{createTime})")
     int saveUser (User user) ;

    /**
     * 根据用户名查询用户数据
     * @param username 用户名
     * @return 如果找到对应的用户则返回这个用户的数据，如果没有找到则返回null
     */
    @Select("select * from user_t where username = #{username}")
    User fineByUsername(String username) ;

    /**
     * 根据用户账号查询用户数据
     * @param phone 用户账号 （手机号
     * @return 如果找到对应的用户则返回这个用户的数据，如果没有找到则返回null
     */
    @Select("select * from user_t where phone = #{phone}")
    User fineByPhone(String phone) ;

    /**
     * 根据用户账号查询用户数据
     * @param id 用户id
     * @return 如果找到对应的用户则返回这个用户的数据，如果没有找到则返回null
     */
    @Select("select * from user_t where id = #{id}")
    User fineById(int id) ;
    @Select("select phone from user_t where id = #{uid}")
    String finePhoneByUid(int uid) ;

    /**
     * 根据用户id 更改用户签名
     * @param id
     * @param cardCase
     * @return 影响行数
     */
    @Update("update user_t set card_case =#{cardCase} where id = #{id}")
    public int updateCardCase(int id , String cardCase) ;

    /**
     * 根据用户id 更改用户昵称
     * @param id
     * @param username
     * @return 影响行数
     */
    @Update("update user_t set username =#{username} where id = #{id}")
     int updateUsername(int id , String username) ;

    /**
     * 逻辑删除
     * @param id
     * @return
     */
    @Update("UPDATE user_t SET is_delete=0 , username = #{username} , hand_url = #{handUrl} WHERE id= #{id} AND is_delete=1")
    int deleteUser(int id , String username , String handUrl ) ;

    /**
     * 根据用户id 更改用户头像
     * @param id
     * @param handUrl
     * @return
     */
    @Update("update user_t set hand_url =#{handUrl} where id = #{id}")
     int updateHandUrl(int id , String handUrl) ;

    @Select("select id ,username , card_case, hand_url , sex  from user_t where id = #{id}")
    UserInfo getUserInfoById(int id) ;

    @Update("update user_t set username =#{username} , card_case = #{cardCase} , sex = #{sex} where id = #{id}")
    int updateUserinfo(String username , String cardCase , String sex , int id) ;

    @Select("select username from user_t where id = #{uid}")
    String getUsernameByUid(int uid) ;

    @Select("select hand_url from user_t where id = #{uid}")
    String getUserImgByUid(int uid) ;

}
